﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace DesktopTool.Model
{
    /// <summary>
    /// 
    /// </summary>
    [XmlRoot("Afbeelding")]
    public struct Afbeelding
    {
        private string filePath;
        [XmlAttribute("FilePath")]
        public string FilePath { get { return filePath; } set { filePath = value; } }

        private string naam;
        [XmlAttribute("Naam")]
        public string Naam { get { return naam; } set { naam = value; } }

        public Afbeelding(string path) : this()
        {
            this.FilePath = path;
            this.Naam = Path.GetFileName(FilePath);
        }

        public override string ToString()
        {
            return Naam;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    [XmlRoot("Locatie")]
    public struct Locatie
    {
        private float lengtegraad;
        [XmlElement]
        public float Lengtegraad { get { return lengtegraad; } set { lengtegraad = value; } }

        private float breedtegraad;
        [XmlElement]
        public float Breedtegraad { get { return breedtegraad; } set { breedtegraad = value; } }
    }

    /// <summary>
    /// 
    /// </summary>
    [XmlRoot("Bezienswaardigheid")]
    public class Bezienswaardigheid
    {
        private string titel;
        [XmlAttribute("Titel")]
        public string Titel { get { return titel; } set { titel = value; } }

        private Locatie locatie;
        [XmlElement("Locatie")]
        public Locatie Locatie { get { return locatie; } set { locatie = value; } }

        private string beschrijvingNL;
        [XmlAttribute("BeschrijvingNL")]
        public string BeschrijvingNL { get { return beschrijvingNL; } set { beschrijvingNL = value; } }

        private string beschrijvingEN;
        [XmlAttribute("BeschrijvingEN")]
        public string BeschrijvingEN { get { return beschrijvingEN; } set { beschrijvingEN = value; } }

        private List<Afbeelding> afbeeldingen;
        [XmlArray("Afbeeldingen")]
        [XmlArrayItem("afbeelding")]
        public List<Afbeelding> Afbeeldingen { get { return afbeeldingen; } set { afbeeldingen = value; } }

        /// <summary>
        /// 
        /// </summary>
        public Bezienswaardigheid()
        {
            Titel = string.Empty;
            Locatie = new Locatie();
            BeschrijvingNL = string.Empty;
            BeschrijvingEN = string.Empty;
            Afbeeldingen = new List<Afbeelding>();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return Titel;
        }
    }
}
